Many data centers today are dependent on the physical infrastructure of a particular data center. Allocation of resources in a physical infrastructure is limited in its ability to adjust to customer needs as well as the cost associated with allocating physical resources to a particular customer.
With the advent of cloud computing applications such as Amazon® EC2, Google® App Engine, and Microsoft® Azure, computing-as a-utility is becoming a reality. By outsourcing computing to the cloud, utility computing frees businesses and consumers from the cost and burden of planning, purchasing, operating, and maintaining physical hardware and software, and at the same time, it offers elasticity to meet dynamic demands in resources and good economy with a pay-as-you-go billing model. The resource allocation and Service Level Agreement (SLA) of today's utility computing are centered around computation (dollars per hour per VM), storage (dollars per GB per month), Internet tracking (dollar per GB transferred), and the availability of these resources. Nevertheless, no abstraction or mechanisms and hence no SLAs are available to capture the requirements on the interactions among the allocated virtual machines (VMs), such as bandwidth guarantees among the VMs.